অ্যাপাচি এইচটিটিপি ক্লায়েন্ট (Apache HTTP Client) একটি জনপ্রিয় লাইব্রেরি যা HTTP রিকুয়েস্ট এবং রেসপন্স পরিচালনা করতে ব্যবহৃত হয়। এটি বিভিন্ন ধরনের HTTP অপারেশন যেমন GET, POST, PUT, DELETE, এবং অন্যান্য HTTP মেথড সমর্থন করে। এখানে আমরা File Upload এবং Download ব্যবস্থাপনা নিয়ে আলোচনা করব।
ফাইল আপলোডের জন্য অ্যাপাচি এইচটিটিপি ক্লায়েন্ট ব্যবহার করা হলে, HTTP POST রিকুয়েস্টের মাধ্যমে ফাইল সার্ভারে পাঠানো হয়। সাধারণত, ফাইল আপলোড করার সময় মুলতঃ Multipart/Form-Data ফরম্যাট ব্যবহার করা হয়।
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.CloseableHttpResponse;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.ContentBody;
import java.io.File;
public class FileUploadExample {
public static void main(String[] args) {
String url = "http://yourserver/upload"; // সার্ভারের URL যেখানে ফাইল আপলোড করতে হবে
File file = new File("path_to_your_file.txt"); // আপলোড করার ফাইলের পাথ
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpPost postRequest = new HttpPost(url);
// ফাইল কন্টেন্ট তৈরি করা
ContentBody fileBody = new FileBody(file);
HttpEntity entity = MultipartEntityBuilder.create()
.addPart("file", fileBody)
.build();
postRequest.setEntity(entity);
try (CloseableHttpResponse response = httpClient.execute(postRequest)) {
// রেসপন্স স্ট্যাটাস চেক করা
System.out.println("Response Code: " + response.getStatusLine().getStatusCode());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
এই কোডে MultipartEntityBuilder
ব্যবহার করে ফাইলকে HTTP POST রিকুয়েস্টের মাধ্যমে সার্ভারে আপলোড করা হয়। ফাইলটি "file" নামক ফর্ম পারামিটার হিসেবে পাঠানো হয়।
ফাইল ডাউনলোডের জন্য HTTP GET রিকুয়েস্ট ব্যবহার করা হয়, এবং রেসপন্স থেকে ফাইল কন্টেন্ট পড়ে স্থানীয় ডিভাইসে সংরক্ষণ করা হয়।
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.CloseableHttpResponse;
import java.io.FileOutputStream;
import java.io.InputStream;
public class FileDownloadExample {
public static void main(String[] args) {
String url = "http://yourserver/download/file.txt"; // ডাউনলোড করার ফাইলের URL
String outputFile = "downloaded_file.txt"; // ডাউনলোড করা ফাইলটি কোথায় সংরক্ষণ হবে
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpGet getRequest = new HttpGet(url);
try (CloseableHttpResponse response = httpClient.execute(getRequest)) {
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
try (FileOutputStream fileOutputStream = new FileOutputStream(outputFile)) {
int bytesRead;
byte[] buffer = new byte[1024];
while ((bytesRead = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
System.out.println("File downloaded successfully.");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে HTTP GET রিকুয়েস্ট ব্যবহার করে একটি ফাইল ডাউনলোড করা হয়েছে এবং সেই ফাইলটি FileOutputStream
ব্যবহার করে স্থানীয় ডিভাইসে সংরক্ষণ করা হয়েছে।
অ্যাপাচি HTTP ক্লায়েন্টের মাধ্যমে ফাইল আপলোড এবং ডাউনলোডের জন্য HTTP POST এবং GET মেথড ব্যবহার করা হয়। ফাইল আপলোডের ক্ষেত্রে MultipartEntityBuilder
ব্যবহার করে ফাইল সার্ভারে পাঠানো হয়, এবং ফাইল ডাউনলোডের ক্ষেত্রে HTTP GET রিকুয়েস্টের মাধ্যমে সার্ভার থেকে ফাইলটি নিয়ে স্থানীয় ডিভাইসে সংরক্ষণ করা হয়।
common.read_more